var fs=require('fs');
var path=require('path');//路径上升到模块

/**
 * @func 找出指定目录下最大的文件
 * @param {string} dir 
 * @param {function} cb 
 */
function findLargest(dir,cb){
    fs.readdir(dir,(err,files)=>{
        // console.log(files);
        if(err){
            return cb(err);
        }

        // cb(null,files)
        var counter=files.length;//数量
        var errored=false;//是否出错
        var stats=[];//
        files.forEach((file,index)=>{
                    // 得到相对于当前4.js的目录
            fs.stat(path.join(dir,file),(err,stat)=>{
                if (errored) return;
                if(err){
                    errored=true;
                    return cb(err);
                }
                stats[index]=stat;//所有文件信息入数组
                if(-- counter == 0){//最后一个
                    var fileStats=stats
                        .filter((stat)=>stat.isFile());
                    // console.log(largest); 
                    let maxFileSize=0;
                    for (let fileStat of fileStats){
                        if (fileStat.size>maxFileSize){
                            maxFileSize=fileStat.size;
                        }
                    }
                    cb(null,maxFileSize);
                }
            })
        })
    })
}


findLargest('../test',(err,fileSize)=>{
    if(err){
        console.error(err);
        return;
    }
    console.log('largest file was:',fileSize);
})